﻿#Requires AutoHotkey v2.0
; 专门应用于Emacs的快捷键


; 将Emacs的shift键映射为ctrl+\
; 定义全局变量
global shiftPressed := false
global shiftPressedTime := 0

; 监听 Shift 键的按下事件
~Shift:: {
    global    
    ; 如果窗口标题包含 "Emacs"，则执行操作
    if (is_wsl2_emacs()) {  ; 替换为实际的 Emacs 窗口标题关键词
        ; 记录 Shift 键按下的时间
        shiftPressedTime := A_TickCount
        ; 设置一个标志，表示 Shift 键被按下
        shiftPressed := true
    }
    return
}

; 监听 Shift 键的释放事件
~Shift Up:: {
    global
    ; 如果窗口标题包含 "Emacs"，则执行操作
    if (is_wsl2_emacs()) {  ; 替换为实际的 Emacs 窗口标题关键词
        ; 如果 Shift 键被单独按下（没有其他键同时按下）
        if (shiftPressed && (A_TickCount - shiftPressedTime < 200)) {  ; 200ms 内没有其他键按下
            Send "^\"  ; 发送 Ctrl+\
        }
        ; 重置标志
        shiftPressed := false
    }
    return
}